package devcamp.team;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import devcamp.team.connection.RegistrationAsyncTask;
import devcamp.team.util.DialogUtils;
import devcamp.team.util.WowoooooooUtils;

/**
 * 設定画面の処理をするアクティビティ.
 * @author hyina_qfir
 *
 */
public class SettingActivity extends Activity {
    /**
     * ログ用のタグ.
     */
    private static final String TAG = "SettingActivity";
    /**
     * ニックネーム入力欄.
     */
    private EditText nicknameEditText;
    /**
     * TwitterIdの入力欄.
     */
    private EditText twitterIdEditText;
    /**
     * 設定ボタン
     */
    private Button settingButton;
    /**
     * キャンセルボタン
     */
    private Button cancelButton;


    //    private DialogUtils dialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setting);
    }

    /**
     * 以下の画面の構成要素を初期化する.
     * <ul>
     * <li>ダイアログ</li>
     * <li>ニックネーム入力欄</li>
     * <li>TwitterID入力欄</li>
     * <li>設定ボタン</li>
     * <li>キャンセルボタン</li>
     * </ul>
     * 
     */
    void initViewLayout() {
        // title ﾊﾞｰ
    	WowoooooooUtils.setTitle(this);
    	
        nicknameEditText = (EditText) this.findViewById(R.id.nickname);
        twitterIdEditText = (EditText) this.findViewById(R.id.twitterId);
        settingButton = (Button) this.findViewById(R.id.settingBtn);
        settingButton.setOnClickListener(getSettingButtonListener());
        cancelButton = (Button) this.findViewById(R.id.cancelBtn);
        cancelButton.setOnClickListener(getCancelButtonListener());
    }

    /**
     * 画面の構成要素を初期化する.
     */
    @Override
    protected void onResume() {
        super.onResume();
        initViewLayout();
    }

    /**
     * 戻るボタンの処理.
     * 本アクティビティを終了する.
     */
    @Override
    public void onBackPressed() {
    	Log.d(TAG, "onBackPressed");
        super.onBackPressed();
    }

    /**
     * キャンセルボタンを押したときのコールバックするリスナーを取得する.<br/>
     * 以下の動作をする.<br/>
     * <ul>
     * <li>トップ画面へ遷移する</li>
     * </ul>
     * 
     * @return キャンセルボタンのリスナー
     */
    OnClickListener getCancelButtonListener() {
        return new OnClickListener() {
            @Override
            public void onClick(View v) {
            	/* 
            	// DevCampTeamAActivity.onCreate() からの処理へ遷移する
            	// DevCampTeamAActivity でのバックキー処理：二回しないと終了しない状況になる。
                Intent intent = new Intent();
                intent.setClassName("devcamp.team", "devcamp.team.DevCampTeamAActivity");
                startActivity(intent);
                
                finish();// 設定画面の手動終了
                */
            	// バックキーと同じ処理に統一
            	// DevCampTeamAActivity.onResume() からの処理へ遷移する
            	onBackPressed();
            }
        };
    }

    /**
     * 設定ボタンを押したときにコールバックするリスナーを取得する.<br/>
     * 以下の動作をする.<br/>
     * <ul>
     * <li>入力内容の取得</li>
     * <li>バリデーションで入力内容を確認する</li>
     * <li>入力内容に問題無い場合、設定を保存する</li>
     * <li>チェックに引っ掛かった場合、ダイアログを表示する</li>
     * <ul>
     * @return 設定ボタンのリスナー
     */
    OnClickListener getSettingButtonListener() {
        return new OnClickListener() {
            @Override
            public void onClick(View v) {
                String nickName = nicknameEditText.getText().toString();
                String twitterId = twitterIdEditText.getText().toString();
                if (WowoooooooUtils.validate(nickName) && WowoooooooUtils.validate(twitterId)) {
                    Log.d(TAG, "nickName : " + nickName + " twitterId : " + twitterId);
                    RegistrationAsyncTask ytask = new RegistrationAsyncTask(SettingActivity.this, nickName, twitterId);
                    ytask.execute();
                } else {
                    DialogUtils.AlertDialog(SettingActivity.this, getResources().getString(R.string.dialog_error_registration_titile), getResources().getString(R.string.dialog_error_registration_message)).show();
                }
            }
        };
    }

}
